﻿using CentralFoveaLib.ColorProcess;
using CentralFoveaLib.Helper;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;

namespace UnitTestLib
{
    [TestClass]
    public class TestColorUtils
    {
        [TestMethod]
        public void TestRGB2HSLRed()
        {
            var hsl = ColorUtils.RGB_HSL(new ColorRGB(255, 0, 0));
            Assert.IsTrue(hsl.H == 0);
            Assert.IsTrue(hsl.S == 100);
            Assert.IsTrue(hsl.L == 50);
        }

        [TestMethod]
        public void TestRGB2HSLGreen()
        {
            var hsl = ColorUtils.RGB_HSL(new ColorRGB(0, 255, 0));
            Assert.IsTrue(hsl.H == 120);
            Assert.IsTrue(hsl.S == 100);
            Assert.IsTrue(hsl.L == 50);
        }

        [TestMethod]
        public void TestRGB2HSLBlue()
        {
            var hsl = ColorUtils.RGB_HSL(new ColorRGB(0, 0, 255));
            Assert.IsTrue(hsl.H == 240);
            Assert.IsTrue(hsl.S == 100);
            Assert.IsTrue(hsl.L == 50);
           
        }

        

        [TestMethod]
        public void TestRGB2HSLDarkOrange()
        {
            var hsl = ColorUtils.RGB_HSL(new ColorRGB(255, 128, 0));
            Assert.IsTrue(hsl.H == 30);
            Assert.IsTrue(hsl.S == 100);
            Assert.IsTrue(hsl.L == 50);

        }

        [TestMethod]
        public void TestRGB2HSLYellow()
        {
            var hsl = ColorUtils.RGB_HSL(new ColorRGB(255, 255, 0));
            Assert.IsTrue(hsl.H == 60);
            Assert.IsTrue(hsl.S == 100);
            Assert.IsTrue(hsl.L == 50);

        }

        [TestMethod]
        public void TestRGB2HSLDarkGreen()
        {
            var hsl = ColorUtils.RGB_HSL(new ColorRGB(0, 128, 0));
            Assert.IsTrue(hsl.H == 120);
            Assert.IsTrue(hsl.S == 100);
            Assert.IsTrue(hsl.L == 25);

        }

        [TestMethod]
        public void TestRGB2HSLAqua()
        {
            var hsl = ColorUtils.RGB_HSL(new ColorRGB(0, 255, 255));
            Assert.IsTrue(hsl.H == 180);
            Assert.IsTrue(hsl.S == 100);
            Assert.IsTrue(hsl.L == 50);

        }
        [TestMethod]
        public void TestRGB2HSLFuchsia()
        {
            var hsl = ColorUtils.RGB_HSL(new ColorRGB(255, 0, 255));
            Assert.IsTrue(hsl.H == 300);
            Assert.IsTrue(hsl.S == 100);
            Assert.IsTrue(hsl.L == 50);

        }


        [TestMethod]
        public void TestRGB2HSLWhite()
        {
            var hsl = ColorUtils.RGB_HSL(new ColorRGB(255, 255, 255));
            Assert.IsTrue(hsl.H == 0);
            Assert.IsTrue(hsl.S == 0);
            Assert.IsTrue(hsl.L == 100);

        }

        [TestMethod]
        public void TestRGB2HSLBlack()
        {
            var hsl = ColorUtils.RGB_HSL(new ColorRGB(0, 0, 0));
            Assert.IsTrue(hsl.H == 0);
            Assert.IsTrue(hsl.S == 0);
            Assert.IsTrue(hsl.L == 0);

        }

        [TestMethod]
        public void TestRGB2HSLDarkGray()
        {
            var hsl = ColorUtils.RGB_HSL(new ColorRGB(179, 179, 179));
            Assert.IsTrue(hsl.H == 0);
            Assert.IsTrue(hsl.S == 0);
            Assert.IsTrue(hsl.L == 70);

        }

        [TestMethod]
        public void TestHSL2RGBBlack()
        {

            var color = ColorUtils.HSL_RGB(new ColorHSL(0, 0, 0));
            Assert.IsTrue(color.R == 0);
            Assert.IsTrue(color.G == 0);
            Assert.IsTrue(color.B == 0);

        }

        [TestMethod]
        public void TestHSL2RGBWhite()
        {
            var color = ColorUtils.HSL_RGB(new ColorHSL(0, 0, 100));
            Assert.IsTrue(color.R == 255);
            Assert.IsTrue(color.G == 255);
            Assert.IsTrue(color.B == 255);

        }
    }
}
